import request from '@/utils/request'

// 获取所有可用的测试类型
export function getTestTypes() {
  return request({
    url: '/mbti/test/types',
    method: 'get'
  })
}

// 获取测试类型详情
export function getTestTypeDetail(testTypeId) {
  return request({
    url: '/mbti/test/types/' + testTypeId,
    method: 'get'
  })
}

// 开始测试
export function startTest(data) {
  return request({
    url: '/mbti/test/start',
    method: 'post',
    data: data
  })
}

// 获取测试题目列表（优化版 - 支持只返回ID列表）
export function getTestQuestions(testTypeId, params = {}) {
  return request({
    url: '/mbti/test/questions/' + testTypeId,
    method: 'get',
    params: {
      onlyIds: params.onlyIds || false, // 是否只返回题目ID和基本信息
      includeOptions: params.includeOptions !== false // 是否包含选项，默认true
    }
  })
}

// 获取单个题目详情
export function getQuestionDetail(questionId) {
  return request({
    url: '/mbti/test/question/' + questionId,
    method: 'get'
  })
}

// 批量获取题目详情（新增 - 批量加载多个题目）
export function getQuestionsDetail(questionIds) {
  return request({
    url: '/mbti/test/questions/batch',
    method: 'post',
    data: {
      questionIds: questionIds
    }
  })
}

// 预加载题目（新增 - 智能预加载）
export function preloadQuestions(testTypeId, currentIndex, range = 3) {
  return request({
    url: '/mbti/test/preload',
    method: 'get',
    params: {
      testTypeId: testTypeId,
      currentIndex: currentIndex,
      range: range // 预加载当前题目前后多少题
    }
  })
}

// 提交单个题目答案
export function submitAnswer(data) {
  return request({
    url: '/mbti/test/answer',
    method: 'post',
    data: data
  })
}

// 批量提交答案
export function submitAnswers(data) {
  return request({
    url: '/mbti/test/answers',
    method: 'post',
    data: data
  })
}

// 完成测试并获取结果
export function completeTest(recordId) {
  return request({
    url: '/mbti/test/complete/' + recordId,
    method: 'post'
  })
}

// 获取测试结果详情
export function getTestResult(recordId) {
  return request({
    url: '/mbti/test/result/' + recordId,
    method: 'get'
  })
}

// 获取人格类型详细描述
export function getPersonalityTypeDescription(personalityType) {
  return request({
    url: '/mbti/test/personality/' + personalityType,
    method: 'get'
  })
}

// 获取测试进度
export function getTestProgress(recordId) {
  return request({
    url: '/mbti/test/progress/' + recordId,
    method: 'get'
  })
}

// 放弃测试
export function abandonTest(recordId) {
  return request({
    url: '/mbti/test/abandon/' + recordId,
    method: 'post'
  })
}

// 获取用户测试历史
export function getUserTestHistory() {
  return request({
    url: '/mbti/test/history',
    method: 'get'
  })
}

// 获取MBTI统计数据
export function getMbtiStatistics() {
  return request({
    url: '/mbti/test/statistics',
    method: 'get'
  })
}

// 验证测试记录
export function validateTestRecord(recordId) {
  return request({
    url: '/mbti/test/validate/' + recordId,
    method: 'get'
  })
}
